package num13;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Leecode102plus {
    public class TreeNode {
        int val;
       TreeNode left;
      TreeNode right;
        TreeNode() {}
        TreeNode(int val) { this.val = val; }
        TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }
    public List<List<Integer>> levelOrder(TreeNode root) {
       List<List<Integer>> lists = new ArrayList<>();

       if (root == null){
           return lists;
       }
        Queue<TreeNode>  queue = new LinkedList<>();
       queue.offer(root);
       //设置循环终止条件
       while (!queue.isEmpty()){
           List<Integer> level = new ArrayList<>();
           int size = queue.size();
           for (int i = 0; i <= size; i++) {
               TreeNode poll = queue.poll();
               level.add(poll.val);
               if (poll.left != null){
                   queue.offer(poll.left);
               }
               if (poll.right != null){
                   queue.offer(poll.right);
               }
           }
           lists.add(level);


       }
       return lists;

    }

}
